package com.emspost.utils;

import java.util.*;

public class IconNameResolver {

    /**
     * 根据上传的图标名称列表生成最终的图标名称列表
     * 
     * @param existingNames 当前文件夹中已存在的图标名称列表
     * @param newNames 上传的图标名称列表
     * @return 生成的图标名称列表
     */
    public static List<String> generateUniqueNames(List<String> existingNames, List<String> newNames) {
        List<String> result = new ArrayList<>();
        Set<String> existingNameSet = new HashSet<>(existingNames); // 使用 Set 加速查找

        // 遍历上传的每个新图标名称
        for (String newName : newNames) {
            if (!existingNameSet.contains(newName)) {
                // 如果名称不存在，直接添加
                result.add(newName);
                existingNameSet.add(newName); // 添加到已存在的名称集合
            } else {
                // 如果名称已存在，生成新名称
                int suffix = 1;
                String uniqueName = newName + "(" + suffix + ")";
                while (existingNameSet.contains(uniqueName)) {
                    suffix++; // 查找下一个可用的后缀
                    uniqueName = newName + "(" + suffix + ")";
                }
                result.add(uniqueName);
                existingNameSet.add(uniqueName); // 添加到已存在的名称集合
            }
        }

        return result;
    }

    public static void main(String[] args) {
        List<String> existingNames = Arrays.asList("房子", "房子(1)", "房子(2)");
        List<String> newNames = Arrays.asList("房子", "房子");

        List<String> finalNames = generateUniqueNames(existingNames, newNames);
        System.out.println("保存后的图标名称： " + finalNames);
        
        // Situation 2 example
        List<String> existingNames2 = Arrays.asList("播放");
        List<String> newNames2 = Arrays.asList("播放", "播放");
        List<String> finalNames2 = generateUniqueNames(existingNames2, newNames2);
        System.out.println("保存后的图标名称： " + finalNames2);
    }
}